需求
修改系统默认输入法为讯飞输入法
代码修改
- 添加Android.mk
packages/inputmethods/**目录下创建 输入法的目录FlyIME, 添加Android.mk**,内容如下:
1 | LOCAL_PATH:= $(call my-dir) |
其中lib 目录下的文件可以在安装后通过adb pull出来,放到FlyIME目录下。
- 修改系统makefile
1 | diff --git a/build/target/product/core.mk b/build/target/product/core.mk |
添加输入法ID
1
2
3
4
5
6
7
8
9
10
11diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
index 7734cfd..0ac5e34 100644 (file)
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -225,4 +225,6 @@
<integer name="def_screenshot_button_show">1</integer>
<!-- the store location of screen capture by default-->
<string name="def_screenshot_location">internal_storage</string>
+
+ <string name="def_input_method" translatable="false">com.iflytek.inputmethod/.FlyIME</string>
</resources>InputMethodUtils.java
1
2
3
4
5
6
7
8
9
10
11
12
13diff --git a/frameworks/base/core/java/com/android/internal/inputmethod/InputMethodUtils.java b/frameworks/base/core/java/com/android/internal/inputmethod/InputMethodUtils.java
index 716997f..8c42dee 100644 (file)
--- a/frameworks/base/core/java/com/android/internal/inputmethod/InputMethodUtils.java
+++ b/frameworks/base/core/java/com/android/internal/inputmethod/InputMethodUtils.java
@@ -1083,7 +1083,7 @@ public class InputMethodUtils {
// At the initial boot, the settings for input methods are not set,
// so we need to enable IME in that case.
public void enableAllIMEsIfThereIsNoEnabledIME() {
- if (TextUtils.isEmpty(getEnabledInputMethodsStr())) {
+ if (!TextUtils.isEmpty(getEnabledInputMethodsStr())) {
StringBuilder sb = new StringBuilder();
final int N = mMethodList.size();
for (int i = 0; i < N; i++) {设置默认值
1
2
3
4
5
6
7
8
9
10
11
12diff --git a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 5e2114d..19c3013 100644 (file)
--- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2463,6 +2463,8 @@ class DatabaseHelper extends SQLiteOpenHelper {
loadSecure35Settings(stmt);
+ loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
+ R.string.def_input_method);
loadBooleanSetting(stmt, Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND,
R.bool.def_mount_play_notification_snd);InputMethodManagerService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49diff --git a/frameworks/base/services/core/java/com/android/server/InputMethodManagerService.java b/frameworks/base/services/core/java/com/android/server/InputMethodManagerService.java
index df1b6f5..59bbffa 100644 (file)
--- a/frameworks/base/services/core/java/com/android/server/InputMethodManagerService.java
+++ b/frameworks/base/services/core/java/com/android/server/InputMethodManagerService.java
@@ -3083,24 +3083,26 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
}
// TODO: The following code should find better place to live.
- if (!resetDefaultEnabledIme) {
- boolean enabledImeFound = false;
- final List<InputMethodInfo> enabledImes = mSettings.getEnabledInputMethodListLocked();
- final int N = enabledImes.size();
- for (int i = 0; i < N; ++i) {
- final InputMethodInfo imi = enabledImes.get(i);
- if (mMethodList.contains(imi)) {
- enabledImeFound = true;
- break;
- }
- }
- if (!enabledImeFound) {
- Slog.i(TAG, "All the enabled IMEs are gone. Reset default enabled IMEs.");
- resetDefaultEnabledIme = true;
- resetSelectedInputMethodAndSubtypeLocked("");
- }
- }
-
+/*
+ * if (!resetDefaultEnabledIme) {
+ * boolean enabledImeFound = false;
+ * final List<InputMethodInfo> enabledImes = mSettings.getEnabledInputMethodListLocked();
+ * final int N = enabledImes.size();
+ * for (int i = 0; i < N; ++i) {
+ * final InputMethodInfo imi = enabledImes.get(i);
+ * if (mMethodList.contains(imi)) {
+ * enabledImeFound = true;
+ * break;
+ * }
+ * }
+ * if (!enabledImeFound) {
+ * Slog.i(TAG, "All the enabled IMEs are gone. Reset default enabled IMEs.");
+ * resetDefaultEnabledIme = true;
+ * resetSelectedInputMethodAndSubtypeLocked("");
+ * }
+ * }
+ *
+ */
if (resetDefaultEnabledIme) {
final ArrayList<InputMethodInfo> defaultEnabledIme =
InputMethodUtils.getDefaultEnabledImes(mContext, mSystemReady, mMethodList);